package 常见api;

public class ThreadJoin {

    public static void main(String[] args) throws InterruptedException {
        Thread t = new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("t线程 run");
                //注释掉，就是先打印t线程，再打印main
                //t.join()不注释：t线程一直运行态，main等待状态
                //t.join(3000)不注释：t线程先打印，然后一直运行；main线程等3秒后打印，然后结束
                while (true){}
            }
        }, "t线程");
        t.start();
        /**
         * Waits for this thread to die.
         * 等待，知道这个线程死亡
         * 考虑：谁等待：main？谁死亡：t线程？
         * 当前线程(t.join在哪个线程执行，就是谁)等待，直到线程引用执行完毕
         */
//        t.join();

        /**
         * Waits at most millis milliseconds for this thread to die.
         * 当前线程等待，最多等待给定的毫秒数，或者线程引用对象死亡
         */
        t.join(3000);
        System.out.println("t线程 start，这里是main");
    }
}